package biblio.metier;

import java.util.ArrayList;
import java.util.Date;

public class Utilisateur extends Personne{

	private int		idUtilisateur;
	private String	pwd;
	private String	pseudonyme;
	private ArrayList<EmpruntEnCours> emprunts = new ArrayList<EmpruntEnCours>();
	
	
	
	
	
	public Utilisateur(String unNom, String unPrenom, int unIdUtilisateur, String unPwd, String unPseudonyme)
	{
		super(unNom, unPrenom);
		idUtilisateur = unIdUtilisateur;
		pwd = unPwd;
		pseudonyme = unPseudonyme;
	}

	public Utilisateur(int unIdUtilisateur)
	{
		
		this.idUtilisateur = unIdUtilisateur;
	}
	
	
	public Utilisateur()
	{
		super();
	}
	
	//	Getteur & Setteur
	public int getIdUtilisateur()
	{	return idUtilisateur;	}

	public String getPwd()
	{	return pwd;	}
	
	public String getPseudonyme()
	{	return pseudonyme;	}
	
	public void setIdUtilisateur(int idUtilisateur)
	{	this.idUtilisateur = idUtilisateur;	}
	
	public void setPwd(String pwd)
	{	this.pwd = pwd;	}
	
	public void setPseudonyme(String pseudonyme)
	{	this.pseudonyme = pseudonyme;	}

	
	
	
	//	Methode
	public void addEmpruntEnCours(Exemplaire unExemplaire) throws BiblioException
	{
		
		try
		{
			if (unExemplaire.getStatus()==EnumStatusExemplaire.SUPPRIME || unExemplaire.getStatus()==EnumStatusExemplaire.PRETE)
				{	throw new BiblioException("Le livre n'existe plus ou est non disponible");	}
			else
				{
					unExemplaire.setStatus(EnumStatusExemplaire.PRETE);
					emprunts.add(new EmpruntEnCours(new Date(), this, unExemplaire));
				}
		}
		catch (Exception e)
		{
			// TODO: handle exception
		}
		// on check que le livre 
	}

	public void addEmpruntEnCours(Exemplaire unExemplaire, Date uneDate) throws BiblioException
	{
		
		try
		{
			if (unExemplaire.getStatus()==EnumStatusExemplaire.SUPPRIME || unExemplaire.getStatus()==EnumStatusExemplaire.PRETE)
			{	throw new BiblioException("Le livre n'existe plus ou est non disponible");	}
			else
			{
				unExemplaire.setStatus(EnumStatusExemplaire.PRETE);
				emprunts.add(new EmpruntEnCours(uneDate, this, unExemplaire));
			}
		}
		catch (Exception e)
		{
			// TODO: handle exception
		}
		// on check que le livre 
	}
	
	public ArrayList<EmpruntEnCours> getEmpruntEnCours()
	{
		return emprunts;
	}
	
	public int getNbEmpruntsEnCours()
	{
		return emprunts.size();
	}

	public void retourEmpruntEnCours(Exemplaire unExemplaire) throws BiblioException
	{
		boolean testeur = false;
		try
		{
			if (unExemplaire.getStatus()==EnumStatusExemplaire.DISPONIBLE)
			{	throw new BiblioException("Le livre n'est pas en pr�t");	}
						
			else
			{
				for (EmpruntEnCours empruntEnCours : this.getEmpruntEnCours())
				{
					if(empruntEnCours.getBook().equals(unExemplaire))
						{
							testeur = true;
							unExemplaire.setStatus(EnumStatusExemplaire.DISPONIBLE);
							emprunts.remove(empruntEnCours);
//							new EmpruntArchive(empruntEnCours, new Date());
						}
				}
				
				if (testeur == false)
					{	throw new BiblioException("Ce livre n'est pas emprunter par cette utilisateur.");	}

			}
		}
		catch (Exception e)
		{
			// TODO: handle exception
		}
	}
	
	@Override
	public String toString()
	{
		return "Utilisateur [idUtilisateur=" + idUtilisateur + ", pwd=" + pwd
				+ ", pseudonyme=" + pseudonyme + ", emprunts=" + emprunts + "]";
	}
	
	
}
